import json
import os.path
import sqlite3

import wx

from config import DB_PATH, NOTEBOOK_TABLE


class TablesIfExit(object):
    def __init__(self):
        """初始化数据库"""
        if not os.path.exists(DB_PATH):
            os.makedirs(DB_PATH)

        abs_db_path = os.path.join(DB_PATH, "notebook.db")
        if not os.path.exists(abs_db_path):
            wx.MessageBox("已在“D:\_db”目录下创建数据库notebook.db，不要删除！", "提示", wx.OK | wx.ICON_INFORMATION)
        self.conn = sqlite3.connect(abs_db_path)  # 改成相对路径
        self.cursor = self.conn.cursor()

    def tables_if_exit(self):
        # 查询记事本表是否存在
        self.cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name=?", (NOTEBOOK_TABLE,))
        # 如果查询结果没有记录，说明表不存在
        if self.cursor.fetchone() is None:
            # 创建表
            create_table_sql = f'''CREATE TABLE IF NOT EXISTS {NOTEBOOK_TABLE} (notebook_options TEXT NOT NULL UNIQUE)'''
            self.cursor.execute(create_table_sql)

            data = {
                'note_font_type': '微软雅黑',
                'note_font_size': 10,
                'note_font_color': '#383A42',
                'note_back_color': '#FAFAFA',
                'note_border_color': '#FF0000',
                'note_title_back_color': '#DFDFDF',
                'note_title_font_size': 10,
                'note_title_font_type': "细体",
            }
            # 将字典序列化为JSON字符串
            json_data = json.dumps(data,ensure_ascii=False)

            # 插入数据
            insert_sql = f"insert into {NOTEBOOK_TABLE} (notebook_options) values (?)"# 与config中的值保持一致
            self.cursor.execute(insert_sql, (json_data,))  # 注意这里是一个元组，包含单个元素json_data
            self.conn.commit()

    def __del__(self):
        self.conn.close()
        # self.cursor.close()
